#ifndef CAMERA_H
#define CAMERA_H

#include <defs/export.h>
#include <defs/global.h>

#include <QtCore>
#include <QtGui>

namespace Opl{ namespace Gui {

    O_PRIVATE_DECLARE(Camera);
    class EXPORTED Camera
    {
    public:
        Camera();
        virtual ~Camera();
        qreal yaw() const;
        qreal pitch() const;
        qreal fov() const;
        QPointF pos() const;

        void setYaw(qreal yaw);
        void setPitch(qreal pitch);
        void setPos(const QPointF &pos);
        void setFov(qreal fov);
        void setTime(qreal time);

        const QMatrix4x4 &viewProjectionMatrix() const;
        const QMatrix4x4 &viewMatrix() const;

    private:
        O_PRIVATE_DECLARE_MEMBER(Camera)
        void updateMatrix() const;

    };
}; };
#endif // CAMERA_H
